package com.linxiao.hrcrm.service.impl;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.http.HtmlUtil;
import com.linxiao.hrcrm.vo.ArticleContentVO;
import com.ruoyi.common.enums.TFEnums;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.lang.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.linxiao.hrcrm.mapper.ArticleContentMapper;
import com.linxiao.hrcrm.domain.ArticleContent;
import com.linxiao.hrcrm.service.IArticleContentService;

/**
 * 内容Service业务层处理
 *
 * @author ruoyi
 * @date 2023-12-25
 */
@Service
public class ArticleContentServiceImpl implements IArticleContentService {
    @Autowired
    private ArticleContentMapper articleContentMapper;

    /**
     * 查询内容
     *
     * @param id 内容主键
     * @return 内容
     */
    @Override
    public ArticleContent selectArticleContentById(Long id) {
        return articleContentMapper.selectArticleContentById(id);
    }

    /**
     * 查询内容列表
     *
     * @param articleContent 内容
     * @return 内容
     */
    @Override
    public List<ArticleContent> selectArticleContentList(ArticleContent articleContent) {
        return articleContentMapper.selectArticleContentList(articleContent);
    }

    /**
     * 新增内容
     *
     * @param articleContent 内容
     * @return 结果
     */
    @Override
    public int insertArticleContent(ArticleContent articleContent) {
        articleContent.setCreateTime(DateUtils.getNowDate());
        articleContent.setUpdateTime(DateUtils.getNowDate());
        articleContent.setDelFlag(TFEnums.F.name());
        articleContent.setUserId(SecurityUtils.getLoginUser().getUserId() + "");
        articleContent.setSendTime(DateUtils.getNowDate());
        return articleContentMapper.insertArticleContent(articleContent);
    }

    /**
     * 修改内容
     *
     * @param articleContent 内容
     * @return 结果
     */
    @Override
    public int updateArticleContent(ArticleContent articleContent) {
        articleContent.setUpdateTime(DateUtils.getNowDate());
        return articleContentMapper.updateArticleContent(articleContent);
    }

    /**
     * 批量删除内容
     *
     * @param ids 需要删除的内容主键
     * @return 结果
     */
    @Override
    public int deleteArticleContentByIds(Long[] ids) {
        return articleContentMapper.deleteArticleContentByIds(ids);
    }

    /**
     * 删除内容信息
     *
     * @param id 内容主键
     * @return 结果
     */
    @Override
    public int deleteArticleContentById(Long id) {
        return articleContentMapper.deleteArticleContentById(id);
    }

    /**
     * 分页查询文章列表
     * @param articleContentVO
     * @return
     */
    @Override
    public List<ArticleContentVO> selectArticleContentPage(ArticleContentVO articleContentVO) {
        articleContentVO.setDelFlag(TFEnums.F.name());
        List<ArticleContentVO> articleContentVOS = articleContentMapper.selectArticleContentPage(articleContentVO);
        if (CollUtil.isNotEmpty(articleContentVOS)) {
            articleContentVOS.parallelStream().forEach(ac -> {
                String html = HtmlUtil.cleanHtmlTag(ac.getContent());
                if (StringUtils.isNotBlank(html) && html.length() > 50) {
                    ac.setContent(html.substring(0, 50));
                } else {
                    ac.setContent(html);
                }
            });
        }
        return articleContentVOS;
    }

    /**
     * 查询所有的标签
     * @param mchId
     * @return
     */
    @Override
    public List<String> selectAllTags(String mchId) {
        String tags = articleContentMapper.selectAllTags(mchId);
        if (StringUtils.isNotBlank(tags)) {
            String[] tagArray = tags.split(",", -1);
            List<String> results = Arrays.asList(tagArray);
            return results.stream().distinct().collect(Collectors.toList());
        }
        return null;
    }
}
